﻿using System;
using System.Runtime.Serialization;

namespace OCXS.OCXSServiceLibrary.OPCXMLDA10 {

    [DataContract(Namespace = "http://opcfoundation.org/webservices/XMLDA/1.0/")]
    public class ServerStatus : System.ComponentModel.INotifyPropertyChanged {

        private string statusInfoField;

        private string vendorInfoField;

        private string[] supportedLocaleIDsField;

        private interfaceVersion[] supportedInterfaceVersionsField;

        private System.DateTime startTimeField;

        private string productVersionField;

        [DataMember(Order = 0)]
        public string StatusInfo {
            get {
                return this.statusInfoField;
            }
            set {
                this.statusInfoField = value;
                this.RaisePropertyChanged("StatusInfo");
            }
        }

        [DataMember(Order = 1)]
        public string VendorInfo {
            get {
                return this.vendorInfoField;
            }
            set {
                this.vendorInfoField = value;
                this.RaisePropertyChanged("VendorInfo");
            }
        }

        [DataMember(Order = 2)]
        public string[] SupportedLocaleIDs {
            get {
                return this.supportedLocaleIDsField;
            }
            set {
                this.supportedLocaleIDsField = value;
                this.RaisePropertyChanged("SupportedLocaleIDs");
            }
        }

        [DataMember(Order = 3)]
        public interfaceVersion[] SupportedInterfaceVersions {
            get {
                return this.supportedInterfaceVersionsField;
            }
            set {
                this.supportedInterfaceVersionsField = value;
                this.RaisePropertyChanged("SupportedInterfaceVersions");
            }
        }

        [DataMember(Order = 4)]
        public System.DateTime StartTime {
            get {
                return this.startTimeField;
            }
            set {
                this.startTimeField = value;
                this.RaisePropertyChanged("StartTime");
            }
        }

        [DataMember(Order = 5)]
        public string ProductVersion {
            get {
                return this.productVersionField;
            }
            set {
                this.productVersionField = value;
                this.RaisePropertyChanged("ProductVersion");
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
